var express = require('express')
var router = express.Router()
var xlsx = require('node-xlsx');  // 引入 数据导入模块
var uuid = require('node-uuid'); // 引入唯一的uuid
var Pro = require('./../sql/col/pros')  // 引入产品的集合
var sql = require('./../sql')        //引入数据库操作模块,默认访问sql下的index.js文件

// 产品接口文档
/**
 *  @api {get} api/pro  获取列表的数据
 *  @apiDescription 获取列表的数据，可以传递不同的参数以获取数据
 *  @apiGroup pro
 *  @apiParam {number} limit 每页显示个数  (默认值是10)
 *  @apiParam {number} count 页码(默认值是0)
 *  @apiSuccessExample { json } success-response:
 * {
 * code:'200',
 * message:'获取产品列表数据',
 * data:[]
 * }
 * @apiSampleRequest /api/pro
 * @apiVersion 1.0.0
 */

router.get('/',function(req,res,next){
    // 不管是get还是post 获取到的参数都是字符串，需要转换
    let limit = req.query.limit * 1 || 10
    let count = req.query.count * 1 || 0
    sql.paging(Pro, {}, { _id: 0 }, limit, count).then((data) => {
        res.send({
            code: '200',
            message: '获取产品列表数据',
            len: data.length,  // 告诉用户请求了多少条数据
            data: data
        })
    })
    // res.send('产品相关接口')  你不是这个方法才
})
//添加一个后台用于数据导入的接口文档
router.get('/upload',function(req,res,next){
    // 1. excel的绝对地址
    let fileStr = 'D:\shop.xlsx'
    // 2. 得到数据后将他转为对象
    // res.send(fileStr)
    let fileData = xlsx.parse(fileStr)
    // res.send(fileData)
    // 3. 获取对应的表中数据  --- 一句excel表格中的数据排序
    let proarr = fileData[0].data
    // res.send(proarr)
    // 4. 遍历数据，组合数据
    let arr = []
    proarr.map((item,index) => {
        if(index > 0 ){
            // 去除数据中的标题一栏
            let obj = {
                proid:'pro_' + uuid.v1(), //产品的唯一值
                type: item[0],
                brand: item[1],
                brandimg: item[2],
                proname: item[3],
                rating: item[4] * 1,
                sales: item[5] * 1,
                stock: item[6] * 1,
                price: item[7] * 1,
                flag: item[8] * 1,
                proimg: item[9] ,
                detail: item[11]
            }
            // 将数据放入到一个数组中
            arr.push(obj)
        }
    })
    // res.send(arr)
    // 5.插入数据库
    sql.insert(Pro,arr).then((res) => {
        res.send('插入数据成功')
    })
})
// 添加查看详情数据接口 
/**
 *  @api {get} api/pro/detail  获取产品的详情数据
 *  @apiDescription 获取产品的详情数据
 *  @apiGroup pro
 *  @apiParam {string} proid 产品id
 *  @apiSuccessExample { json } success-response:
 * {
 * code:'200',
 * message:'获取详情的数据',
 * data:data[0]
 * }
 * @apiSampleRequest /api/pro/detail
 * @apiVersion 1.0.0
 */
router.get('/detail',(req, res, next) => {
    // 1. 获取产品的唯一值参数
    const {proid} = req.query  // es6 结构赋值
    console.log('12312312')
    // 2. 依据proid 查询 数据库
    sql.find(Pro, { proid },{ _id: 0}).then(data => {
        data.length > 0 ? res.send({
            code: '200',
            message: '获取详情的数据',
            data: data[0]
        }) : res.send({
            code: '10404' ,// 10404 状态码自己编写  没有获取到数据
            message: '没有查询到该产品相关数据'
        })
    })
})

module.exports = router;
